#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
#include<vector>
#include<unordered_map>
#include<algorithm>

using namespace std;

//int minimumPushes(string word) {
//    unordered_map<char, int> um;
//    for (auto c : word)
//        um[c]++;
//    int n = um.size();
//    int res = 0, cnt = 1;
//    while (n > 9)
//    {
//        res += 8 * cnt;
//        n -= 8;
//        cnt++;
//    }
//    res += n * cnt;
//
//    return res;
//}

vector<int> countOfPairs(int n, int x, int y) {
    vector<int> res(n, 0);
    bool flag = x == y;
    if (x > y)   swap(x, y);
    for (int i = 1; i <= n; i++)
    {
        for (int j = i + 1; j <= n; j++)
        {
            if (j < y || i > x || flag)
            {
                int d1 = j - i - 1, d2 = 0;
                if (i > x && j < y)   d2 = y - j + i - x;
                else if (i > x)  d2 = j - y + i - x;
                else d2 = y - j + x - i;
                if (d1 < 0)  d1 = INT_MAX;
                if (d2 < 0)  d2 = INT_MAX;
                int d = min(d1, d2);
                if (flag)    d = d1;
                res[d] += 2;
            }
            else    res[x - i + j - y] += 2;
        }
    }
    return res;
}

int minimumPushes(string word) {
    vector<int> um(26);
    for (auto c : word)
        um[c - 'a']++;
    sort(um.begin(), um.end(), greater<int>());
    int res = 0, cnt = 1;
    int count = 8;
    for (int i = 0; i < um.size(); i++)
    {
        if (um[i] == 0)  break;
        res += cnt * um[i];
        count--;
        if (!count)
        {
            cnt++;
            count = 8;
        }
    }
    return res;
}

int main()
{
    countOfPairs(5, 2, 4);
    return 0;
}